/*!
 *file name : task.c
 *author :hu
 *
 *description:
 */


#include "task.h"  
#include "led.h"  
#include "key.h"  



#define LED_MS 50
#define KEY_MS 20

/*！
 * 定义taskHandle_t结构体变量，当然可以使用结构体数组形式进行统一管理
 *其中的函数应在对应的模块实现，形如以下注释
*/
// void ledTaskHandle(void)
// {
// 	/*do sth*/
// }

// void KeyTaskHandle(void)
// {
// 	/*do sth*/
// }
taskHandle_t ledTask=
{
	.timeCnt=0,
	.runFlg=0,
	.pWorkFun=ledTaskHandle
}
taskHandle_t keyTask=
{
	.timeCnt=0,
	.runFlg=0,
	.pWorkFun=KeyTaskHandle
}


/*!
 *
 *说明：各任务执行，runFlg标志为1时，执行对应任务
 *参数：
 *返回值：
 */
void taskProcess(void)
{
	if(ledTask.runFlg)
	{
		ledTask.runFlg=0;
		ledTask.pWorkFun();
	}
	if(keyTask.runFlg)
	{
		keyTask.runFlg=0;
		keyTask.pWorkFun();
	}
}
/*!
 *
 *说明：计时器，该函数在定时器中断中调用
 *参数：
 *返回值：
 */
void timeCounter(void)
{
	ledTask.timeCnt++;
	if(ledTask.timeCnt>=LED_MS)
	{
		ledTask.timeCnt=0;
		ledTask.keyRunFlg=1;
	}
	keyTask.timeCnt++;
	if(keyTask.timeCnt>=KEY_MS)
	{
		keyTask.timeCnt=0;
		keyTask.LedRunFlg=1;
	}
}



